In [1]:
# importar bibliotecas
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import load_iris
from sklearn.tree import DecisionTreeClassifier, plot_tree
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
In [2]:
# carregar dataframe
sui = pd.read_csv('df_atualizada.csv')
In [3]:
# visualizar colunas sem omissão
pd.set_option('display.max_columns', None)
pd.set_option('display.max_colwidth', None)
# visualizar dataframe
sui.head()
Out[3]:
| CODMUNNATU | CODMUNOCOR | CODMUNRES | NATURAL | CAUSABAS | IDADE | SEXO | RACACOR | ESTCIV | ESC | ESCFALAGR1 | OCUP | suicidio | OCUP_INT | IDADE_INT | idade_real | CODMUNNATU_INT | NATURAL_INT | RACACOR_INT | ESTCIV_INT | ESC_INT | ESCFALAGR1_INT | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 120020 | 410690 | 120020 | 812 | C258 | 460.0 | 2 | 1 | 2 | 3 | 11 | 999992.0 | 0 | 999992 | 460 | 60 | 120020 | 812 | 1 | 2 | 3 | 11 |
| 1 | 411610 | 120040 | 120040 | 841 | B342 | 455.0 | 2 | 1 | 2 | 5 | 8 | 241005.0 | 0 | 241005 | 455 | 55 | 411610 | 841 | 1 | 2 | 5 | 8 |
| 2 | 412650 | 120040 | 120040 | 841 | B342 | 485.0 | 1 | 1 | 2 | 3 | 11 | 354705.0 | 0 | 354705 | 485 | 85 | 412650 | 841 | 1 | 2 | 3 | 11 |
| 3 | 411190 | 110020 | 120040 | 841 | B342 | 471.0 | 1 | 1 | 0 | 0 | 0 | 782510.0 | 0 | 782510 | 471 | 71 | 411190 | 841 | 1 | 0 | 0 | 0 |
| 4 | 412650 | 120040 | 120040 | 841 | B342 | 479.0 | 2 | 1 | 2 | 4 | 12 | 0.0 | 0 | 0 | 479 | 79 | 412650 | 841 | 1 | 2 | 4 | 12 |
In [4]:
# definir novo dataframe
df = sui[[ 'suicidio', 'IDADE_INT', 'idade_real', 'CODMUNNATU_INT', 'CODMUNOCOR', 'CODMUNRES', 'NATURAL_INT', 'RACACOR_INT', 'ESTCIV_INT', 'ESC_INT', 'ESCFALAGR1_INT', 'CAUSABAS', 'SEXO', 'RACACOR', 'OCUP_INT']]
In [5]:
# exibir dataframe
df.head()
Out[5]:
| suicidio | IDADE_INT | idade_real | CODMUNNATU_INT | CODMUNOCOR | CODMUNRES | NATURAL_INT | RACACOR_INT | ESTCIV_INT | ESC_INT | ESCFALAGR1_INT | CAUSABAS | SEXO | RACACOR | OCUP_INT | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0 | 460 | 60 | 120020 | 410690 | 120020 | 812 | 1 | 2 | 3 | 11 | C258 | 2 | 1 | 999992 |
| 1 | 0 | 455 | 55 | 411610 | 120040 | 120040 | 841 | 1 | 2 | 5 | 8 | B342 | 2 | 1 | 241005 |
| 2 | 0 | 485 | 85 | 412650 | 120040 | 120040 | 841 | 1 | 2 | 3 | 11 | B342 | 1 | 1 | 354705 |
| 3 | 0 | 471 | 71 | 411190 | 110020 | 120040 | 841 | 1 | 0 | 0 | 0 | B342 | 1 | 1 | 782510 |
| 4 | 0 | 479 | 79 | 412650 | 120040 | 120040 | 841 | 1 | 2 | 4 | 12 | B342 | 2 | 1 | 0 |
In [6]:
# Caminho onde deseja salvar o arquivo CSV localmente
file_path = '/Users/leonardozara/Documents/Suicidio/df_atualizada_2.csv'
# Salvar o DataFrame como um arquivo CSV
df.to_csv(file_path, index=False) # Use index=False para não incluir o índice no arquivo CSV
Modelo de Árvore de decisão¶
In [7]:
# definindo variáveis para as variáveis dependentes e independentes (target e data)
from sklearn import tree
# carregando dataframe para modelo de previsao
dataframe = pd.read_csv('df_atualizada_2.csv')
df = dataframe.drop('CAUSABAS', axis=1)
# definindo as variaveis dependente (y) e independentes (X)
X = df.drop('suicidio', axis=1)
y = df['suicidio']
# Dividir o conjunto de dados em treinamento e teste
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# treinar classificador
clf = tree.DecisionTreeClassifier(random_state=42)
clf = clf.fit(X_train, y_train)
# Fazer previsões com o conjunto de teste
y_pred = clf.predict(X_test)
In [8]:
# Calcular a acurácia do modelo
accuracy = accuracy_score(y_test, y_pred)
print(f"Acurácia do modelo: {accuracy:.2f}")
Acurácia do modelo: 0.98
In [9]:
# Plotar a árvore de decisão
plt.figure(figsize=(120, 80)) # Aumentei o tamanho da figura para melhor visualização
plot_tree(clf, feature_names=X.columns, class_names=['Não Suicídio', 'Suicídio'], filled=True)
plt.show()